package com.itheima.tlias08_14.mapper;

import com.itheima.tlias08_14.dto.PageClazzDTO;
import com.itheima.tlias08_14.dto.SelectByIdClazzDTO;
import com.itheima.tlias08_14.dto.SelectDataTimeClazzDTO;
import com.itheima.tlias08_14.dto.StatisticEmpGenderDTO;
import com.itheima.tlias08_14.entity.Clazz;
import com.itheima.tlias08_14.paramobject.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

//@Repository 是由 Spring 框架提供的注解，用于将 DAO 类标记为持久层组件，并自动扫描到 Spring 容器中。
//@Mapper 是由 MyBatis 提供的注解，用于将 Mapper 接口标记为 MyBatis 的 Mapper 接口，并自动扫描到 Spring 容器中。
@Mapper
public interface ClazzMapper {
    //模糊查询
    List<PageClazzDTO> selectClazz(@Param("sc")SelectClazz selectClazz);


    int deleteClazzById(@Param("id") Integer id);

    //更新班级信息
    int updateClazz(@Param("c") Clazz clazz);
    //实时更新开班状态
    @Update("update clazz set status = case  when begin_date > now() then  '未开班'\n" +
            "    when begin_date < now() and end_date > now() then  '已开班'\n" +
            "    when end_date < now() then  '已结课' end where begin_date is not null and end_date is not null")
    int updateClazzStatus();


    int insertClazz(@Param("c") InsertClazz insertClazz);


    SelectByIdClazzDTO selectClazzById(@Param("id") Integer id);

    //根据班主任id查询是否存在班级
    List<StatisticEmpGenderDTO> selectByMasterId(@Param("ids") List<Integer> id);




    List<SelectDataTimeClazzDTO> selectAllClazz();


    //统计总学员的学历情况
    List<StatisticEmpGenderDTO> countStudentDegree();

    //统计各班级人数
    List<StatisticEmpGenderDTO> countClazz();
}
